Estadística: Comparación de distribuciones de datos

Práctica: Creando DataFrame, visualizaciones y comparaciones de estadísticos básicos con Python.
Objetivo: Análisis de estadisticos básicos y evaluación de afirmaciones.
Recurso: El siguiente ejercicio fue tomado de Khan academy para la práctica. https://es.khanacademy.org/
Descargar: https://github.com/Azhura/python
Autor: Carlos Prado | Córdoba Argentina
Licencia: Libre.

Problema: Los miembros de una clase de música estaban discutiendo sobre qué instrumentos tocan los mejores estudiantes. Se hizo una encuesta, y aquí están los resultados:

  • Los 13 flautistas tenían un promedio de entre 3.84 y 3.88.

  • Solo había 3 precusionistas. Uno tenía un promedio de 2.4, otro 2.8, y otro 3.2.

  • 4 de los saxofonistas tenían un promedio de 3.9 y los otros 5 tenían un promedio de 4.0.

Formulas a utilizar:

  • Media Aritmética

    $ \bar{x} = \frac {\sum_{i = 1}^{n} * \ x_i}{n}$

  • Mediana

    $P(X \leq m) = 0.5$

  • Varianza

    $s^2 \ = \ \frac {\sum_{i=1}^{n} \ \cdot \ (x_i-\bar{x})^2}{n-1} $

  • Desviación típica

    $s=+\sqrt{s^2}$

Afirmar:

  • a) Para los percusionistas, la mediana del promedio es "< | > | =" que la media.
  • b) Para los saxofonistas, la mediana del promedio es "< | > | =" que la media.
  • c) La desviación estándar del promedio de los flautistas es "< | > | =" que la desviación estándar del promedio de los saxofonistas.
In [240]:
import pandas as pd
import numpy as np

Creando DataFrame de datos con Pandas

In [198]:
categoria = ["Flautista"] * 13 + ["Percusionista"] * 3 + ["Saxofonista"] * 9
valores = [0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3] + [2.4,2.8,3.2] + [3.9,3.9,3.9,3.9,4.0,4.0,4.0,4.0,4.0]
df = pd.DataFrame({"Estudiante": categoria, "Promedio": valores})
dfsum = pd.DataFrame({"Suma": valores})
dfc = pd.DataFrame({"Estudiante": categoria})
In [306]:
df.head()
Out[306]:
Estudiante Promedio
0 Flautista 0.3
1 Flautista 0.3
2 Flautista 0.3
3 Flautista 0.3
4 Flautista 0.3

Descripción general de valores cuantitativos

In [193]:
df.describe()
Out[193]:
Promedio
count 25.000000
mean 1.916000
std 1.756815
min 0.300000
25% 0.300000
50% 0.300000
75% 3.900000
max 4.000000

Descripción general de valores categóricos

In [200]:
dfc.describe()
Out[200]:
Estudiante
count 25
unique 3
top Flautista
freq 13

Filtrado de grupos

In [231]:
#grupo_flautistas = df['Estudiante']
In [232]:
#grupo_flautistas[grupo_flautistas == "Flautista"]
In [233]:
grupo1 = df['Promedio'].groupby(df['Estudiante'])
In [234]:
grupo1.describe()
Out[234]:
count mean std min 25% 50% 75% max
Estudiante
Flautista 13.0 0.300000 5.777784e-17 0.3 0.3 0.3 0.3 0.3
Percusionista 3.0 2.800000 4.000000e-01 2.4 2.6 2.8 3.0 3.2
Saxofonista 9.0 3.955556 5.270463e-02 3.9 3.9 4.0 4.0 4.0
In [235]:
grupo1.median()
Out[235]:
Estudiante
Flautista        0.3
Percusionista    2.8
Saxofonista      4.0
Name: Promedio, dtype: float64
In [244]:
import matplotlib as plt
%matplotlib inline
In [250]:
plt.pyplot.hist(df['Promedio'])
Out[250]:
(array([13.,  0.,  0.,  0.,  0.,  1.,  1.,  1.,  0.,  9.]),
 array([0.3 , 0.67, 1.04, 1.41, 1.78, 2.15, 2.52, 2.89, 3.26, 3.63, 4.  ]),
 <a list of 10 Patch objects>)
In [318]:
flautistas = df.loc[0:12, ['Estudiante','Promedio']]
flautistas.head()
Out[318]:
Estudiante Promedio
0 Flautista 0.3
1 Flautista 0.3
2 Flautista 0.3
3 Flautista 0.3
4 Flautista 0.3
In [323]:
flautistas.describe()
Out[323]:
Promedio
count 1.300000e+01
mean 3.000000e-01
std 5.777784e-17
min 3.000000e-01
25% 3.000000e-01
50% 3.000000e-01
75% 3.000000e-01
max 3.000000e-01
In [337]:
std = flautistas.std(ddof=0)
var = flautistas.var(ddof=0)
print("Desviación tipica:",std,"Varianza:",var)
Desviación tipica: Promedio    5.551115e-17
dtype: float64 Varianza: Promedio    3.081488e-33
dtype: float64
In [324]:
percusionistas = df.loc[13:15, ['Estudiante','Promedio']]
percusionistas
Out[324]:
Estudiante Promedio
13 Percusionista 2.4
14 Percusionista 2.8
15 Percusionista 3.2
In [325]:
percusionistas.describe()
Out[325]:
Promedio
count 3.0
mean 2.8
std 0.4
min 2.4
25% 2.6
50% 2.8
75% 3.0
max 3.2
In [333]:
std = percusionistas.std(ddof=0)
var = percusionistas.var(ddof=0)
media = percusionistas.median()
print("Desviación tipica:",std,"Varianza:",var,"media",media)
Desviación tipica: Promedio    0.326599
dtype: float64 Varianza: Promedio    0.106667
dtype: float64 media Promedio    2.8
dtype: float64
In [305]:
saxofonistas = df.loc[16:24, ['Estudiante','Promedio']]
saxofonistas
Out[305]:
Estudiante Promedio
16 Saxofonista 3.9
17 Saxofonista 3.9
18 Saxofonista 3.9
19 Saxofonista 3.9
20 Saxofonista 4.0
21 Saxofonista 4.0
22 Saxofonista 4.0
23 Saxofonista 4.0
24 Saxofonista 4.0
In [327]:
saxofonistas.describe()
Out[327]:
Promedio
count 9.000000
mean 3.955556
std 0.052705
min 3.900000
25% 3.900000
50% 4.000000
75% 4.000000
max 4.000000
In [336]:
std = saxofonistas.std(ddof=0)
var = saxofonistas.var(ddof=0)
mediana = saxofonistas.median()
print("Desviación tipica:",std,"Varianza:",var,"Mediana:",mediana)
Desviación tipica: Promedio    0.04969
dtype: float64 Varianza: Promedio    0.002469
dtype: float64 Mediana: Promedio    4.0
dtype: float64

Respuesta

  • a)Para los percusionistas, la mediana del promedio es " = " que la media.
    • mean = 2.8
    • median = 2.8
  • b) Para los saxofonistas, la mediana del promedio es " > " que la media.
    • mean = 3.955556
    • median = 4.0
    • std = 0.04969
  • c) La desviación estándar del promedio de los flautistas es " < " que la desviación estándar del promedio de los saxofonistas.
    • std flautista = 5.777784e-17
    • std saxofonista = 5.270463e-02